[quartz] Draw needs_display_region if available
authorJohn Ralls <jralls@ceridwen.us>
Sun, 8 May 2022 18:32:59 +0000 (11:32 -0700)
committerJohn Ralls <jralls@ceridwen.us>
Thu, 19 May 2022 23:46:35 +0000 (16:46 -0700)
gdk/quartz/GdkQuartzView.c

index c20c5de83af8a91b745c48343e242c20df4a47d5..557451606cfd4935f9b35d9572f7bdae1e9cb5be 100644 (file)
       return;
     }
 
-  /* Clear our own bookkeeping of regions that need display */
   if (impl->needs_display_region)
     {
+      _gdk_window_process_updates_recurse (gdk_window, impl->needs_display_region);
       cairo_region_destroy (impl->needs_display_region);
       impl->needs_display_region = NULL;
     }
-
-  [self getRectsBeingDrawn: &drawn_rects count: &count];
-  region = cairo_region_create ();
-
-  for (i = 0; i < count; i++)
+  else
     {
-      gdk_rect.x = drawn_rects[i].origin.x;
-      gdk_rect.y = drawn_rects[i].origin.y;
-      gdk_rect.width = drawn_rects[i].size.width;
-      gdk_rect.height = drawn_rects[i].size.height;
+      [self getRectsBeingDrawn: &drawn_rects count: &count];
+      cairo_region_t* region = cairo_region_create ();
 
-      cairo_region_union_rectangle (region, &gdk_rect);
-    }
+      for (i = 0; i < count; i++)
+        {
+          gdk_rect.x = drawn_rects[i].origin.x;
+          gdk_rect.y = drawn_rects[i].origin.y;
+          gdk_rect.width = drawn_rects[i].size.width;
+          gdk_rect.height = drawn_rects[i].size.height;
+
+          cairo_region_union_rectangle (region, &gdk_rect);
+        }
 
-  impl->in_paint_rect_count++;
-  _gdk_window_process_updates_recurse (gdk_window, region);
-  impl->in_paint_rect_count--;
+      impl->in_paint_rect_count++;
+      _gdk_window_process_updates_recurse (gdk_window, region);
+      impl->in_paint_rect_count--;
 
-  cairo_region_destroy (region);
+      cairo_region_destroy (region);
+    }
 
   if (needsInvalidateShadow)
     {